The disclosure includes aspects of a packet transmission apparatus, a communication system and a program.
Data is communicated over both wired and wireless communication systems. However, data communication over wireless channels has become increasingly common. For example, Wi-Fi is used for wireless communication for connections based on the IEEE 802.11 standard. Many other wireless channels may be used such as WiMAX, 3G, mesh networks, or community networks, to name a few.
Both wired and wireless communication channels can be lossy. Wireless channels may be lossy such that data may often be lost during transmission due to any one of a variety of conditions. For example, weather conditions may be such that the transmission of communication data may be impaired. Likewise, there may be interference to data transmission from a variety of causes such as interference from other devices transmitting on the same channel.
Even though the wired channel's transmission medium is less susceptible to external interference, the active devices deployed in wired networks possess finite resources that contribute to transmission losses if overwhelmed by multiple, uncorrelated transmission sources. Any of these factors may contribute to additional loss in data packet transmission or increased data packet erasure rates.
Many data communications systems employ end-to-end transport protocols, such as Transmission Control Protocol (TCP), where data communication is provided across interconnected networks or devices. TCP is utilized in communications networks in order to provide a mechanism for reliability, flow control, and congestion control. In such end-to-end transport protocols, data to be transmitted is segmented into packets of data. The data packets are transmitted to a receiver where the packets are verified and reassembled into the original (data) message. An acknowledgement (ACK) is returned from the receiver to indicate that the data packets were received.
TCP uses a number of mechanisms to achieve high performance and avoid congestion collapse, where network performance can fall by several orders of magnitude. These mechanisms control the amount of data entering the network, keeping the data flow below a rate that would trigger collapse. They also yield an approximately max-min fair allocation between flows. Data reception acknowledgments, or lack of data reception acknowledgments, are used by senders to infer network conditions between the TCP sender and receiver. Coupled with timers, TCP senders and receivers can alter the behavior of the flow of data. This mechanism is more generally referred to as congestion control and/or network congestion avoidance.
Modern implementations of TCP contain four intertwined algorithms: Slow-start, congestion avoidance, fast retransmit, and fast recovery (RFC 5681). In addition, senders employ a retransmission timeout (RTO) that is based on the estimated round-trip time (or RT) between the sender and receiver, as well as the variance in this round trip time. The behavior of this timer is specified in RFC 6298. There are subtleties in the estimation of RTT. For example, senders must be careful when calculating RTT samples for retransmitted packets; typically they use Karn's Algorithm or TCP timestamps (see RFC 1323). These individual RTT samples are then averaged over time to create a Smoothed Round Trip Time (SRTT) using Jacobson's algorithm. This SRTT value is used as the round-trip time estimate.
In data communications, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver. It provides a mechanism for the receiver to control the transmission speed, so that the receiving node is not overwhelmed with data from transmitting node. Flow control should be distinguished from congestion control, which is used for controlling the flow of data when congestion has actually occurred. Flow control mechanisms can be classified by whether or not the receiving node sends feedback to the sending node.
Flow control is important because it is possible for a sending computer to transmit information at a faster rate than the destination computer can receive and process the information. This can happen if the destination computer has a heavy traffic load in comparison to the sending computer, or if the destination computer has less processing power than the sending computer. Data submitted for transmission into any given digital communication link is usually not rate controlled. This means that data to be transmitted is sent into the link as soon as it is ready for transmission. Then the reliable transport layer protocols (analogous to TCP) of the ISO stack are responsible for reacting to the data loss and regulating the average transmission rate with coarse adjustment of the amount of data being sent in response to the feedback about losses. This behavior results in gross underutilization of the available channel capacity.
When everything is wired, channel capacity is less varied. However with wireless communication, channel capacity varies and is difficult to predict. Conventional techniques to predict channel capacity have been inaccurate because they did not take into account short-term changes in the maximum available channel capacity and its interaction with the long-term average channel capacity and reacted slowly to these changes. Currently use of a wireless channel widely varies and in order to assure reliable transport of packets, the packet transmission rate overcompensates by often slowing itself down thus underutilizing the channel capacity. This inefficiency results in lost or wasted bandwidth for the users.
Therefore there is a need to more efficiently utilize the capacity of wireless communication channels.